import Vue from 'vue';
import Vuex from 'vuex';

Vue.use(Vuex);

const state = {
	lists: [
		{name: "张三", price: 50000},
		{name: '李四', price: 845454},
		{name: '王五', price: 122},
		{name: '赵六', price: 7856}
	]
}

const getters = {
	newLists: state => {
		return state.lists.map((item, index) => {
			return {
				name: '**' + item.name + '**',
				price: item.price /2
			};
		})
	}
}

const mutations = {
	reducePrice: (state, payload) => { // 这个是commit 的传递过啦的方法名
		// setTimeout(function() { 
			state.lists.forEach(item => {
 		 		item.price -= (payload ? payload : 1);
			})
		// }, 3000); 这样的话会导致，事件先执行了，而价格3秒后才降价
	}
}


const actions = {
	/*reducePriceA: (context, payload) => {
		setTimeout(function function_name (argument) {
			context.commit('reducePrice', payload);
			// 这里的context就相当于 this.$store //这时候我么你在ListOne中调用的就要用 
			// this.$store.dispatch('reducePriceA', payload) // 这是actions的 分发操作
		}, 2000);
	}*/
	reducePrice: (context, payload) => {
		setTimeout(function function_name (argument) {
			context.commit('reducePrice', payload);
			// 这里的context就相当于 this.$store //这时候我么你在ListOne中调用的就要用 
			// this.$store.dispatch('reducePriceA', payload) // 这是actions的 分发操作
		}, 2000);
	}
}

export default new Vuex.Store({
	state,
	getters,
	mutations,
	actions
});